System administrators on a daily basis can manage databases or other servers that have a large number of installed applications. System administrators configure the databases or servers to meet various administrative goals or management policies, such as, providing the data in a recoverable format in preparation for a system failure. In addition, the system administrator should monitor the policies for updates, report on the state or health of the system (e.g., whether it is conforming to the desired policy), react when the system no longer conforms to the desired policy, as well as other actions.
In order to perform such actions, the system administrator translates policies into a set of detailed low-level actions that are utilized to configure the system. This requires significant knowledge of the options exposed by the installed applications and the details and semantics of the deployed applications since system administration is generally not easy and intuitive. The system administrator may establish separate monitoring and reporting mechanisms and, if automation is desired, it has to be established manually. The system administrator repeats this process individually for every target being managed, thus, there are no efficiencies of scale in management. This results in redundant time and effort being expended for each managed target. In addition, to ensure that a machine or system is performing as desired, a system administrator has to collect data from various sources, which can be time consuming and tedious.
Therefore, to overcome the aforementioned as well as other deficiencies, what is needed is automated sampling and aggregation of performance or other dynamically varying data to make such data available for a wide range of uses.